public interface List<E> {
    
    //pre: la lista no esta vacia
    //post: remueve y devuelve el valor del parametro
    //      sino regresa null
    public E remove(E value);
    
    //pre: la lista no esta vacia
    //post: remueve y devuelve el primer valor de la lista
    public E removeFirst();
    
    //pre: la lista no esta vacia
    //post: remueve y devuelve el ultimo valor de la lista
    public E removeLast();
    
    //post: el valor es agregado al inicio de la lista
    public void addFirst(E value);

    //post: devuelve el numero de elementos de la lista
    public int size();

    //post: devuelve true si la lista esta vacia 
    public boolean isEmpty();
    
    //pre: la lista no esta vacia
    //post: devuelve el primer valor de la lista
    public E getFirst();

    //post: el valor es agregado al final de la lista
    public void addLast(E value);
}
